package com.etcn.common.dao;

import java.util.List;

/**
 * DAO支持类实现
 * @author guozc
 * @date 2015-12-28
 * @param <T>
 */
public interface ICrudDao<T> extends IBaseDao {

	/**
	 * 根据id获取单条数据
	 * @param id
	 * @return
	 */
	T getById(long id) throws Exception;
	
	/**
	 * 查询单条数据
	 * @param entity
	 * @return
	 */
	T find(T entity) throws Exception;
	
	/**
	 * 查询数据列表
	 * @param entity
	 * @return
	 */
	List<T> findList(T entity) throws Exception;
	
	/**
	 * 查询数据列表（app使用）
	 * @param entity
	 * @return
	 */
	List<T> findAppList(T entity) throws Exception;
	
	/**
	 * 查询所有数据列表
	 * @return
	 */
	List<T> findAllList() throws Exception;
	
	/**
	 * 插入数据
	 * @param entity
	 * @return
	 */
	void insert(T entity) throws Exception;
	
	/**
	 * 批量插入
	 * @param list
	 */
	void insertBatch(List<T> list) throws Exception;
	
	/**
	 * 更新数据
	 * @param entity
	 * @return
	 */
	void update(T entity) throws Exception;
	
	/**
	 * 根据id更新数据
	 * @param entity
	 * @return
	 */
	void updateById(T entity) throws Exception;
	
	/**
	 * 删除数据
	 * @param entity
	 * @return
	 */
	void delete(T entity) throws Exception;
	
	/**
	 * 根据主键删除
	 * @param id 主键
	 * @throws Exception
	 */
	void deleteById(long id) throws Exception;
	
	/**
	 * 逻辑删除数据(is_deleted字段置为'1')
	 * @param entity
	 * @throws Exception
	 */
	void deleteLogically(T entity) throws Exception;
	
	/**
	 * 根据id逻辑删除数据(is_deleted字段置为'1')
	 * @param entity
	 * @throws Exception
	 */
	void deleteLogicallyById(long id) throws Exception;
	
}